package com.dapeis.core.utils.json;

import me.chanjar.weixin.common.bean.WxJsapiSignature;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import net.sf.json.util.NewBeanInstanceStrategy;

import org.springframework.stereotype.Component;

import com.ag.core.base.Pager;
import com.ag.module.common.api.domain.NoticePush;
import com.ag.module.common.api.domain.city.City;
import com.ag.module.common.api.domain.city.County;
import com.ag.module.common.api.domain.city.Province;
import com.ag.module.common.plugin.sms.SmsSendRequest;
import com.ag.utils.json.AGsonBuilder;
import com.dapeis.core.utils.json.tim.TIMAccountGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMCheckFriendGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMFriendGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMFriendInfoGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMMessageBodyGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMMessageContentGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMMessageGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMOfflinePushGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMSignatrueGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMTAGInfoGsonAdapter;
import com.dapeis.core.utils.json.tim.TIMTagGsonAdapter;
import com.dapeis.domain.Collocation;
import com.dapeis.domain.CosFile;
import com.dapeis.domain.Coupons;
import com.dapeis.domain.MoneyStatistics;
import com.dapeis.domain.Plan;
import com.dapeis.domain.Comment;
import com.dapeis.domain.Garderobe;
import com.dapeis.domain.Order;
import com.dapeis.domain.Requirement;
import com.dapeis.domain.Shop;
import com.dapeis.domain.User;
import com.dapeis.domain.UserInformation;
import com.dapeis.domain.ext.CollocationExt;
import com.dapeis.domain.ext.CommentExt;
import com.dapeis.domain.ext.GarderobeExt;
import com.dapeis.domain.ext.MoneyLogExt;
import com.dapeis.domain.ext.OrderExt;
import com.dapeis.domain.ext.TaskOrderExt;
import com.dapeis.domain.ext.UserExt;
import com.dapeis.domain.ext.UserInformationExt;
import com.dapeis.domain.msg.Message;
import com.dapeis.im.tim.req.TIMFriend;
import com.dapeis.im.tim.req.TIMTag;
import com.dapeis.im.tim.req.accout.TIMAccount;
import com.dapeis.im.tim.req.friend.TIMCheckFriend;
import com.dapeis.im.tim.req.friend.TIMFriendInfo;
import com.dapeis.im.tim.req.message.TIMMessage;
import com.dapeis.im.tim.req.message.TIMMessageBody;
import com.dapeis.im.tim.req.message.TIMMessageContent;
import com.dapeis.im.tim.req.message.TIMOfflinePush;
import com.dapeis.im.tim.req.signature.TIMSignature;
import com.dapeis.im.tim.req.tag.TIMTAGInfo;
import com.sun.org.apache.bcel.internal.generic.NEW;

@Component
public class GsonBuilderRegist {

    static {
	AGsonBuilder.INSTANCE.disableHtmlEscaping();
	AGsonBuilder.INSTANCE.excludeFieldsWithoutExposeAnnotation()
		.serializeNulls();
	AGsonBuilder.INSTANCE.registerTypeAdapter(Collocation.class,
		new CollocationGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(WxMpUser.class,
		new WxUserGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(WxJsapiSignature.class,
		new WxJsapiSignatureGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Garderobe.class,
		new GarderboeGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(GarderobeExt.class,
		new GarderobeExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(User.class,
		new UserGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Plan.class,
		new PlanGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Order.class,
		new OrderGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(UserExt.class,
		new UserExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(OrderExt.class,
		new OrderExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Pager.class,
		new PagerGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(UserInformation.class,
		new UserInfoGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Requirement.class,
		new RequirementGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(City.class,
		new CityGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Province.class,
		new ProvinceGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Comment.class,
		new CommentGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(County.class,
		new CountyGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(UserInformationExt.class,
		new UserInformationExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TaskOrderExt.class,
		new TaskOrderGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMTAGInfo.class,
		new TIMTAGInfoGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMTag.class,
		new TIMTagGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMAccount.class,
		new TIMAccountGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMSignature.class,
		new TIMSignatrueGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(CollocationExt.class,
		new ColloncationExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(CommentExt.class,
		new CommentExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMCheckFriend.class,
		new TIMCheckFriendGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMFriendInfo.class,
		new TIMFriendInfoGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMFriend.class,
		new TIMFriendGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(MoneyStatistics.class,
		new MoneyStatisticsGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(MoneyLogExt.class,
		new MoneyLogExtGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Coupons.class,
		new CouponsGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMMessage.class,
		new TIMMessageGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMMessageContent.class,
		new TIMMessageContentGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMMessageBody.class,
		new TIMMessageBodyGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Message.class,
		new MessageGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(TIMOfflinePush.class,
		new TIMOfflinePushGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(SmsSendRequest.class,
		new SMSRequestGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(CosFile.class,
		new CosFileGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(NoticePush.class,
		new NoticePushGsonAdapter());
	AGsonBuilder.INSTANCE.registerTypeAdapter(Shop.class,
		new ShopGsonAdapter());
    }
}